package com.njust.utils;

import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Timer;
import java.util.TimerTask;

/**
 * @author zjwpro@foxmail.com
 * @date 2018/1/14 下午5:34
 * 没有啥难度想改用另外一种方法，该怎么解决
 */
@Slf4j
public class TcpUtil {
    private static Socket socket;
    //发送给三色灯的开启代码
   private static final byte[] EW = {(byte) 0xFE,(byte) 0x0F,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x04,
            (byte) 0x01,(byte) 0x03,(byte) 0x31,(byte) 0x93};
    private static final byte[] alarm = {(byte) 0xFE,(byte) 0x0F,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x04,
            (byte) 0x01,(byte) 0x0D,(byte) 0xB0,(byte) 0x57};
    private static final byte[] reset = {(byte) 0xFE,(byte) 0x0F,(byte) 0x00,(byte) 0x00,(byte) 0x00,(byte) 0x04,
            (byte) 0x01,(byte) 0x00,(byte) 0x71,(byte) 0x92};

    public static void  action(Integer id) throws IOException{
        Timer timer = new Timer();
        //获取连接和流
        //此处是不是因为ip地址错误,没有错误,
        // 三色灯的ip连接
        socket=new Socket("192.168.1.232",10000);
        //获取scoket输出流
        OutputStream outputStream=socket.getOutputStream();
        //根据出入的参数的值的不同 做不同的处理
        switch (id){
            case 2:
                //输出code
                outputStream.write(EW);
                log.info("三色灯预警");
                break;
            case 1:
                outputStream.write(alarm);
                log.info("三色灯报警");
                break;
            case 0:
                //输出code
                outputStream.write(reset);
                log.info("三色灯重置");
                break;
            default:
                log.info("三色灯代码指令传输错误");
                break;
        }
        //outputStream.close();
        //socket.close();
        timer.schedule(new TimerTask() {
            @Override
            public void run(){
                try {
                    outputStream.close();
                    //关闭socket
                    socket.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }, 200);// 这里百毫秒
    }
}
